package com.jenkins.test.proxy.gov.constant;

import com.jenkins.test.proxy.gov.dto.GovResponse;
import com.jenkins.test.proxy.gov.dto.reponse.*;

/**
 * @version V1.0.0
 * @ClassName: {@link GovStandardSigmoid}
 * @Description: 请求地址枚举表 - 请求类型和函标数据
 * @author: Lanzhou
 * @date: 2021/4/22 9:11
 * @Copyright:2020 All rights reserved.
 */
public enum GovStandardSigmoid {

    /**
     * 请求类型:
     * 企业注册
     * 基础数据下载地址
     * 平台版本下载地址
     * 用能单位基础信息配置上传地址
     * 采集数据上传地址
     * 用能单位基础信息配置下载地址
     * 采集数据下载地址
     */
    REGISTRATION(RequestType.POST, RegistrationResponse.class, "企业注册"),
    DOWNLOAD_BASE_DATA(RequestType.POST, DownBaseDataResponse.class, "基础数据下载地址"),
    VERSION_CHECK(RequestType.POST, VersionCheckResponse.class, "平台版本下载地址"),
    UPLOAD_CONFIG_DATA(RequestType.POST, GovResponse.class, "用能单位基础信息配置上传地址"),
    UPLOAD_ENERGY_DATA(RequestType.POST, GovResponse.class, "采集数据上传地址"),
    DOWNLOAD_CONFIG_DATA(RequestType.POST, DownConfigResponse.class, "用能单位基础信息配置下载地址"),
    DOWNLOAD_ENERGY_DATA(RequestType.POST, DownEnergyResponse.class, "采集数据下载地址");

    /**
     * 请求类型
     */
    private RequestType reqType;

    /**
     * 响应类型 - 用于转换结果
     */
    private Class<?> repType;

    /**
     * 描述
     */
    private String describe;

    /**
     * 获取类型
     *
     * @param standard 标准
     * @return
     */
    public static GovStandardSigmoid getStandard(String standard) {
        return valueOf(standard);
    }

    /**
     * 获取类型
     *
     * @param standard 标准
     * @return
     */
    public static RequestType getRequestType(String standard) {
        return getStandard(standard).reqType;
    }

    /**
     * 获取类型
     *
     * @param standard 标准
     * @return
     */
    public static Class<?> getResponseType(String standard) {
        return getStandard(standard).repType;
    }

    private GovStandardSigmoid(RequestType reqType, Class<?> repType, String describe) {
        this.reqType = reqType;
        this.repType = repType;
        this.describe = describe;
    }

    public RequestType getReqType() {
        return reqType;
    }

    public void setReqType(RequestType reqType) {
        this.reqType = reqType;
    }

    public Class<?> getRepType() {
        return repType;
    }

    public void setRepType(Class<?> repType) {
        this.repType = repType;
    }

    public String getDescribe() {
        return describe;
    }

    public void setDescribe(String describe) {
        this.describe = describe;
    }
}
